<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>集合和范围 [...]</title>
</head>
<body>
    <script>
        // 在 [...] 中的几个字符或者字符类表示“搜索给定字符中的任意一个”。

        // 查找 [t 或 m] 然后匹配 "op"
        let str = 'Mop top';
        console.log(str.match(/[mt]op/gi).toString()) // Mop,top
        
        // 只会用 [oi] 中的 o 或 i 单个字符去匹配（匹配字符：Vola, Vila），所以结果为 null。
        let str2 = 'Voila'
        console.log(str2.match(/V[oi]la/)) // null
    </script>

    <script>
        // 范围
        let str3 = 'Exception 0xAF'
        console.log( str3.match(/x[0-9A-F][0-9A-F]/).toString()) // xAF

        let  str4 = 'a b, a1b'
        console.log( str4.match(/a[\s\d]b/g).toString()) // a b,a1b
    </script>

    <script>
        // 排除范围 [^...]。在开头添加插入符号 ^ 表示匹配除了给定字符之外的任意字符。

        // 不匹配空格和数字。
        let str5 = '1a 2b 3c 4d'
        console.log(str5.match(/[^\s0-9]/g).toString()) // a,b,c,d

        // [...] 中的字符不需要转义
        let reg = /[-().^+*]/g
        console.log('1 + 1 = 2 ^ 3 = 8'.match(reg).toString()) // +,^
    </script>
</body>
</html>